home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
WINDOWS
/
PROFFT.ARJ
/
MISCFUNC.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-27
|
6KB
|
160 lines
/****************************************************************************
MISCFUNC.CPP Denne filen inneholder (i denne rekkef°lgen):
*****************************************************************************
void SetBMPPixel(HANDLE hBitmap, int iX, int iY, int iW, int iH, BYTE Colour)
BYTE GetBMPPixel(HANDLE hBitmap, int iX, int iY, int iW, int iH)
void SetComplex(HANDLE hComplex, int iX, int iY, int iW, int iH, prcomplex *compZ)
void GetComplex(HANDLE hComplex, int iX, int iY, int iW, int iH, prcomplex *compZ)
****************************************************************************/
#include "owl.h"
#include "applicat.h"
#include "string.h"
#include "mem.h"
#pragma hdrstop
#include "profftid.h" // Symbolske konstanter
#include "profft.h" // Klassedefinisjoner
#include "prcomp.h" // Kompleks struktur + komplekse konst.
void SetBMPPixel(HANDLE hBitmap, int iX, int iY, int iW, int iH, BYTE Colour)
/****************************************************************************
Denne setter en pixel i et DI bitmap. Merk! Den setter en verdi i bitmappen,
ikke en farge. Vi forutsetter at bitmappen er av riktig format (8 bit. pr
pixel) og at verdien som settes stemmer med den aktuelle fargetabellen for
bitmappen. Denne fungerer uavhengig av objektene og krever derfor bredde og
h°yde pσ bitmappen som parametre.
HANDLE hBitmap Handle til DI bitmappen.
int iX X koordinatet
int iY Y koordinatet
int iW Bredden pσ bitmappen
int iH H°yden pσ bitmappen
BYTE Colour Verdien som skal settes.
Forutsetter: At de parametrene som sendes er lovlige, dvs. vi har ingen
feilsjekking om kalleren fors°ker σ sette bytes utenfor
arrayet.
Kodet av: MK
*****************************************************************************/
{
char huge *hpBitmap;
hpBitmap = (char huge *)GlobalLock(hBitmap);
if (hpBitmap!=NULL)
// Denne regner ut posisjon i bitmaparrayet. Siden DI bitmappen
// addresseres fra slutten av bitmappen, mσ vi ta Y koordinatet
// og trekke fra h°yden. Dessuten ganger vi med bredden og plusser
// pσ X koordinatet (vanlig posisjonering i 2D array).
hpBitmap[(long)(iW)*(iH-iY-1)+iX]=Colour;
else
MessageBox(GetActiveWindow(), "TGenericPicWindow::SetBMPPixel called when bitmap was not locked",
ERROR_CAPTION, MB_ERROR);
}
BYTE GetBMPPixel(HANDLE hBitmap, int iX, int iY, int iW, int iH)
/****************************************************************************
Denne henter en verdi i et DI bitmap. Merk! Den henter en verdi i bitmappen,
ikke en farge. Vi forutsetter at bitmappen er av riktig format (8 bit. pr
pixel) og at verdien som settes stemmer med den aktuelle fargetabellen for
bitmappen. Denne fungerer uavhengig av objektene og krever derfor bredde og
h°yde pσ bitmappen som parametre.
HANDLE hBitmap Handle til DI bitmappen.
int iX X koordinatet
int iY Y koordinatet
int iW Bredden pσ bitmappen
int iH H°yden pσ bitmappen
Returnerer: BYTE Verdien i den aktuelle posisjonen.
Forutsetter: At de parametrene som sendes er lovlige, dvs. vi har ingen
feilsjekking om kalleren fors°ker σ lese bytes utenfor
arrayet.
Kodet av: MK
*****************************************************************************/
{
char huge *hpBitmap;
hpBitmap = (char huge *)GlobalLock(hBitmap);
if (hpBitmap!=NULL)
// Denne regner ut posisjon i bitmaparrayet. Siden DI bitmappen
// addresseres fra slutten av bitmappen, mσ vi ta Y koordinatet
// og trekke fra h°yden. Dessuten ganger vi med bredden og plusser
// pσ X koordinatet (vanlig posisjonering i 2D array).
return ((unsigned char)(hpBitmap[(long)(iW)*(iH-iY-1)+iX]));
else
MessageBox(GetActiveWindow(), "TGenericPicWindow::GetBMPPixel called when bitmap was not locked",
ERROR_CAPTION, MB_ERROR);
return FALSE;
}
void SetComplex(HANDLE hComplex, int iX, int iY, int iW, int iH, prcomplex *compZ)
/****************************************************************************
Denne setter en verdi i et komplekst bilde. Denne fungerer uavhengig av
objektene og krever derfor bredde og h°yde pσ bildet som parametre.
HANDLE hComplex Handle til DI bitmappen.
int iX X koordinatet
int iY Y koordinatet
int iW Bredden pσ bitmappen
int iH H°yden pσ bitmappen
prcomplex *compZ Peker til det komplekse tallet som skal settes.
Forutsetter: At de parametrene som sendes er lovlige, dvs. vi har ingen
feilsjekking om kalleren fors°ker σ sette tall utenfor
arrayet.
Kodet av: MK
*****************************************************************************/
{
prcomplex huge *hpComplex;
long lOffset;
hpComplex = (prcomplex huge *)GlobalLock(hComplex);
if (hpComplex!=NULL)
{
lOffset = (((long)(iH-iY-1)*iW+iX));
_fmemcpy(&hpComplex[lOffset], compZ, sizeof(prcomplex));
}
else
MessageBox(GetActiveWindow(), "SetComplex GlobalLock failed",
ERROR_CAPTION, MB_OK);
}
void GetComplex(HANDLE hComplex, int iX, int iY, int iW, int iH, prcomplex *compZ)
/****************************************************************************
Denne henter en verdi i et komplekst bilde. Denne fungerer uavhengig av
objektene og krever derfor bredde og h°yde pσ bildet som parametre.
HANDLE hComplex Handle til DI bitmappen.
int iX X koordinatet
int iY Y koordinatet
int iW Bredden pσ bitmappen
int iH H°yden pσ bitmappen
prcomplex *compZ Peker til det komplekse tallet som skal motta kopien
av tallet i den oppgitte posisjonen.
Forutsetter: At de parametrene som sendes er lovlige, dvs. vi har ingen
feilsjekking om kalleren fors°ker σ sette tall utenfor
arrayet.
Kodet av: MK
*****************************************************************************/
{
prcomplex huge *hpComplex;
long lOffset;
hpComplex = (prcomplex huge *)GlobalLock(hComplex);
if (hpComplex!=NULL)
{
lOffset = (((long)(iH-iY-1)*iW+iX));
_fmemcpy(compZ, &hpComplex[lOffset], sizeof(prcomplex));
}
else
MessageBox(GetActiveWindow(), "GetComplex GlobalLock failed",
ERROR_CAPTION, MB_OK);
}